unit Verlegung;

interface

Uses
  {$IFDEF MSWINDOWS}
  Classes, Controls, Konst,
  {$ELSE}
  Classes, Konst, // QControls,
  {$ENDIF}
  Team;

Type TVerlegung     = class(TObject)
      Heimmannschaft,
      Auswaertsmannschaft : Integer;
      Neuer_Termin        : TDateTime; // TDate
      Neue_Zeit           : TZeit;
      HeimspieltagTausch  : Boolean;
      VerlegtOhneTermin   : Boolean;
      Timestamp           : TDateTime;

      Constructor Create_new;
      Constructor Create_Copy(AlteVerlegung:TVerlegung);
      Constructor Create(Var Eingabe:Text);
      Constructor CreateFromStringList(List:TObject; Var Position:Integer);
      Function Speichern(Var Ausgabe:TObject):Integer;
End;

implementation

Uses Sysutils;

Constructor TVerlegung.Create_new;
Begin
 Heimmannschaft      := -1;
 Auswaertsmannschaft := -1;
 Neuer_Termin        := 0;
 HeimspieltagTausch  := False;
 Neue_Zeit           := TZeit.Create_new;
 Timestamp           := Now;
 VerlegtOhneTermin   := False;
End;

Constructor TVerlegung.Create_Copy(AlteVerlegung:TVerlegung);
Begin
 Heimmannschaft      := AlteVerlegung.Heimmannschaft;
 Auswaertsmannschaft := AlteVerlegung.Auswaertsmannschaft;
 Neuer_Termin        := AlteVerlegung.Neuer_Termin;
 HeimspieltagTausch  := AlteVerlegung.HeimspieltagTausch ;
 Neue_Zeit           := TZeit.Create_Copy( AlteVerlegung.Neue_Zeit );
 Timestamp           := AlteVerlegung.Timestamp;
 VerlegtOhneTermin   := AlteVerlegung.VerlegtOhneTermin;
End;

Constructor TVerlegung.Create(Var Eingabe:Text);
Var S : String;
Begin
 {$I-}
 Readln(Eingabe, Heimmannschaft);
 Readln(Eingabe, Auswaertsmannschaft);
 Readln(Eingabe, S);
 Neuer_Termin := StrToFloat( Trim( S ) );
 Readln(Eingabe, S);
 If S = 'VerlegtOhneTermin' then
  Begin
   VerlegtOhneTermin := True;
   Readln(Eingabe, S);
  End
 else VerlegtOhneTermin := False;
 If S = 'Zeit' then
  Begin
   Neue_Zeit := TZeit.Create_new;
   Neue_Zeit.LoadFromFile( Eingabe );
   Readln(Eingabe, S);
  End;
 If S = 'TS' then
  Begin
   Readln(Eingabe, S);
   TimeStamp := StrToFloat( Trim( S ) );
   Readln(Eingabe, S);
  End
 else TimeStamp := 0;
 If S = 'HeimspieltagTausch' then HeimspieltagTausch := True
  else HeimspieltagTausch := False;
 If Neue_Zeit = nil then
   Neue_Zeit := TZeit.CreateFromString( '20:00' );
 {$I+}
End;

Constructor TVerlegung.CreateFromStringList(List:TObject; Var Position:Integer);
Var S : String;
Begin
 Heimmannschaft := StrToInt( ReadlnFromStringList(List, Position) );
 Auswaertsmannschaft := StrToInt( ReadlnFromStringList(List, Position) );
 Neuer_Termin := StrToFloat( ReadlnFromStringList(List, Position) );
 S := ReadlnFromStringList(List, Position);
 If S = 'VerlegtOhneTermin' then
  Begin
   VerlegtOhneTermin := True;
   S := ReadlnFromStringList(List, Position);
  End
 else VerlegtOhneTermin := False;
 If S = 'Zeit' then
  Begin
   Neue_Zeit := TZeit.Create_new;
   Neue_Zeit.LoadFromStringList( List, Position );
   S := ReadlnFromStringList(List, Position);
  End;
 If S = 'TS' then
  Begin
   TimeStamp := StrToFloat( ReadlnFromStringList(List, Position) );
   S := ReadlnFromStringList(List, Position);
  End
 else TimeStamp := 0;
 If S = 'HeimspieltagTausch' then HeimspieltagTausch := True
  else HeimspieltagTausch := False;
 If Neue_Zeit = nil then
   Neue_Zeit := TZeit.CreateFromString( '20:00' );
End;

Function TVerlegung.Speichern(Var Ausgabe:TObject):Integer;
Var S : String;
Begin
 WritelnToObject(Ausgabe, IntToStr(Heimmannschaft) );
 WritelnToObject(Ausgabe, IntToStr(Auswaertsmannschaft) );
 WritelnToObject(Ausgabe, FloatToStr(Neuer_Termin) );
 If VerlegtOhneTermin then WritelnToObject(Ausgabe, 'VerlegtOhneTermin');
 WritelnToObject(Ausgabe, 'Zeit');
 WritelnToObject(Ausgabe, Neue_Zeit.ToString );
 WritelnToObject(Ausgabe, 'TS');
 WritelnToObject(Ausgabe, FloatToStr(TimeStamp) );
 If HeimspieltagTausch then S := 'HeimspieltagTausch'
  else S := 'Kein HeimspieltagTausch';
 WritelnToObject(Ausgabe, S);
 Speichern := 0;
End;


end.
